对比CPU和GPU,FPGA优势、劣势、应用全解析

您所在的位置:网站首页 JAVA 处理器 JPU 对比CPU和GPU,FPGA优势、劣势、应用全解析

对比CPU和GPU,FPGA优势、劣势、应用全解析

2024-07-11 14:41| 来源: 网络整理| 查看: 265

1 FPGA简介

当我们需要进行计算时,通常会选择使用基于指令的架构,比如中央处理器(CPU)或图形处理器(GPU),编写适用于这些架构的软件程序。这些架构是通用的,可以执行各种不同类型的计算任务。

然而,还有一种不同的方法,即为特定的计算任务设计专门的电路,不依赖于通用架构和软件。这种方法更加费力,需要进行电路设计和硬件实现,但可以在特定计算任务上获得更高的性能和效率。

本文重点介绍这种能获取高性能的方法,即使用可重构集成电路,也称为现场可编程门阵列(FPGA)。FPGA是一种特殊的芯片,可以通过配置来实现各种不同的电路功能。可以根据特定的计算需求,将FPGA配置成一个定制的电路,以执行特定的计算任务。与基于指令的架构不同,FPGA不需要编写软件程序,而是直接配置硬件电路来执行计算任务。

2 FPGA的优劣势

为什么我们倾向于使用 FPGA 进行计算,而不是更常见的CPU或GPU?与GPU和CPU相比,FPGA在以下几个方面存在差异:

延迟:计算需要多长时间?

→ FPGA在这方面表现良好。

连通性:可以连接哪些输入/输出,以及带宽是多少?

→ FPGA可以直接连接输入,并提供非常高的带宽。

工程成本:表达计算需要多少工作量?

→ 工程成本通常比基于指令的架构要高得多,因此其优势必须物有所值。

能源效率:计算需要消耗多少能源?

→ 这经常被列为FPGA的一个巨大优势,但FPGA是否比CPU或GPU更好,实际上取决于应用场景。

接下来更详细地讨论每个方面。

3 低延迟

FPGA相对于CPU和GPU具有更低的延迟。在特定的应用场景下,使用FPGA可以实现非常低的延迟。

使用FPGA,可以实现约等于或低于1微秒的延迟;而使用CPU,延迟小于50微秒已经是非常不错的表现了。此外,FPGA的延迟更加可预测,更具确定性。主要原因是FPGA更加专用化:它们不依赖于通用操作系统,并且通信无需通过通用总线(如USB或PCIe)进行。

因此,对于需要高性能和低延迟的应用场景,例如喷气式战斗机的自动驾驶仪或高频算法交易引擎,选择使用FPGA是个更好的选择,它能够提供非常短的延迟,更可靠的性能,并且能够满足特定的需求,不受通用架构和操作系统的限制。

图片

4 连通性

在FPGA上,可以直接把任何数据源(如网络接口或传感器)连接到芯片的引脚上,这点与GPU和CPU形成鲜明对比,因为在GPU和CPU上,必须通过标准化总线(如USB或PCIe)连接数据源,并依赖操作系统将数据传递给应用程序。FPGA的与芯片引脚的直接连接提供了极高的带宽和低延迟。

这种高带宽在无线电天文学应用中是必需的,比如LOFAR和SKA。在这些应用中,现场装有许多专用传感器,产生大量数据。为了更方便处理,必须在发送之前减少数据量。为此,荷兰无线电天文学研究所ASTRON设计了Uniboard²,这是一块搭载了四个FPGA的板卡,其每秒处理的数据量比阿姆斯特丹互联网交换中心还要多。

图片

5 工程成本

在讨论能源效率这个微妙问题之前,让我们先讨论FPGA的主要缺点:相比基于指令的架构(即CPU和GPU),它们的编程/配置要困难得多。传统上,这些硬件电路是通过硬件描述语言(HDL),如VHDL和Verilog,进行描述的,而软件则是通过众多编程语言之一,如Java、C和Python进行编程的。

从理论上讲,硬件描述语言和编程语言都可以用来表达任何计算(都是图灵完备的),但在工程细节上存在巨大的差异。

一种新兴的趋势是高级综合(HLS):使用常规编程语言(如OpenCL或C++)对FPGA进行编程,从而实现更高级别的抽象。然而,即使使用这样的语言,编程FPGA的难度仍然比编程基于指令的系统高一个数量级。

编程FPGA的困难部分很大程度上是长时间的编译时间。例如,使用英特尔的OpenCL编译器,编译一个典型的FPGA程序需要4到12个小时之间。这是由于布局和布线阶段:想要的定制电路需要映射到拥有的FPGA资源上,并且路径尽可能短。这是一个复杂的优化问题,需要大量计算。英特尔提供了一个仿真器,因此测试正确性不需要进行这个漫长的步骤,但确定和优化性能确实需要进行这些漫长的编译阶段。

图片

6 能源效率

在英特尔的宣传中,一直强调FPGA在能源效率方面具有明显的优势。然而,实际情况并不那么明确,尤其是在涉及浮点计算时。但我们首先来考虑FPGA相对于CPU或GPU在能源效率方面的明显优势。

就逻辑和固定精度计算而言,FPGA在能源效率方面表现出色。尤其在加密货币挖掘中,正是这一特性使得FPGA具有优势。实际上,过去很多人都使用FPGA进行比特币挖掘。

值得一提的是,如今大多数人都使用ASIC(专用集成电路)进行比特币挖掘。ASIC是专门为特定目的而构建的定制集成电路。虽然ASIC是更为能源高效的解决方案,但需要巨额的前期投资用于设计和批量芯片生产,才能实现成本效益。

图片

从能源效率的角度来看,FPGA板不需要依赖主机计算机运行,因为它们具备自己的输入/输出接口,这样可以节省主机的能源和金钱开销。而与之相反的是GPU,GPU需要通过PCIe或NVLink与主机系统进行通信,因此需要主机的运行支持。(NVidia Jetson是GPU的一个例外,但它并不是高端GPU。)

7 浮点数的能效——FPGA与GPU的比较

许多高性能计算应用,如深度学习,通常依赖于浮点运算,GPU在这方面表现出色。过去,FPGA在浮点计算方面效率相对较低,因为需要从逻辑块组装浮点单元,这消耗了大量资源。

像Arria 10和Stratix 10这样的新一代FPGA在FPGA结构中集成了浮点单元,使其在浮点计算方面更为出色。那么,添加浮点单元是否使FPGA在能效上对浮点计算更有吸引力?它们比GPU更节能吗?

把最先进的GPU与最先进的FPGA进行比较。目前市面上最快的专业GPU是Tesla V100,理论最大性能为15 TFLOPS(每秒兆浮点运算,是测量浮点性能的标准单位),功耗约为250瓦。其中一款最好的FPGA开发板是Nallatech 520C,它采用Altera/Intel的新一代Statix 10芯片。该开发板的理论最大性能为9.2 TFLOPS,功耗约为225瓦。

如果把这两个设备在能效上进行比较,GPU似乎更节能,在理论上能达到56 GFLOP/W(每瓦吉浮点运算,是测量浮点性能能效的标准单位),而FPGA仅能达到40.9 GFLOP/W。因此,如果要购买新的浮点数硬件,并且需要主机电脑,那么在这种粗略的比较中,选择GPU可能更合适。

然而,这种差距很小,并且有可能新一代基于Stratix 10的FPGA开发板在浮点计算方面比Volta更节能。此外,上述比较是在不同工艺节点下进行的,因为Tesla V100采用了12纳米工艺,而Stratix 10则采用了较旧的14纳米工艺。

尽管比较表明,如果需要能效较高的浮点计算,最好选择GPU,但并不能说明GPU在浮点计算方面天生更节能。目前,GPU在浮点能效方面占据优势,但这种情况在不久的将来可能会发生改变。

图片

FPGA的能效标签:取决于应用领域

如果不需要主机电脑,那么需要比较带有主机的高端GPU和不带主机的高端FPGA。如果使用上述比较中的相同数据,那么带有主机的GPU和不带主机的FPGA在能效上完全相同,前提是主机消耗116.7瓦(在多GPU配置中,每个GPU消耗的电量)。现代主机的功耗在50到250瓦之间,这使得FPGA更具竞争力。

在某些领域,很难绕开FPGA。在军事应用中,如导弹制导系统,FPGA由于其低延迟而被使用。在射电天文学应用中,FPGA的专用输入/输出对于处理大量数据有重要作用。在加密货币挖掘中,FPGA的定点和逻辑运算能效优势明显。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3